package com.ecut.property_project.model;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.math.BigDecimal;
import java.util.Date;

public class FeeList {
    /**
    * 费用清单编号
    */
    private String listId;

    /**
    * 收费组织
    */
    private String chargeOrg;

    /**
    * ！区域
    */
    private String region;

    /**
    * 物业管理处
    */
    private String propertyMgmt;

    /**
    * ！楼栋
    */
    private String buildingName;

    /**
    * ！楼层
    */
    private String floor;

    /**
    * ！套房
    */
    private String suiteName;

    /**
    * ！房间
    */
    private String roomName;

    /**
    * ！铺位
    */
    private String bunkName;

    /**
    * ！*合同编号
    */
    private String contractId;

    /**
    * ！*合同名称
    */
    private String contractName;

    /**
    * ！*合同类型
    */
    private String contractType;

    /**
    * 客户
    */
    private String customer;

    /**
    * 单价
    */
    private BigDecimal unitPrice;

    /**
    * 数量
    */
    private BigDecimal quantity;

    /**
    * 税率
    */
    private BigDecimal taxRate;

    /**
    * 应收金额（含税）
    */
    private BigDecimal totalAmount;

    /**
    * 税费金额
    */
    private BigDecimal tax;

    /**
    * 本金金额
    */
    private BigDecimal principal;

    /**
    * 已收款金额
    */
    private BigDecimal amountReceived;

    /**
    * ！收费项目
    */
    private String chargeItem;

    /**
    * ！收费标准
    */
    private String chargeStandard;

    /**
    * 费用所属月(格式：年+月）
    */
    @JsonFormat(pattern = "yyyy-MM",timezone="GMT+8")
    private Date chargeMonth;

    /**
    * 业务应收月（格式：年＋月）
    */
    @JsonFormat(pattern = "yyyy-MM",timezone="GMT+8")
    private Date expectedMonth;

    /**
    * 费用应收日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date expectedDate;

    /**
    * 费用起始日
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date startDate;

    /**
    * 费用截至日
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date endDate;

    /**
    * ！是否大额
    */
    private Boolean largeAmount;

    /**
    * ！扣款状态
    */
    private Object paymentStatus;

    /**
    * 创建人
    */
    private String creator;

    /**
    * 创建时间（格式：年月日时分秒）
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createDate;

    /**
    * 备注
    */
    private String note;

    /**
    * ！收讫
    */
    private Object receiveStatus;

    public String getListId() {
        return listId;
    }

    public void setListId(String listId) {
        this.listId = listId;
    }

    public String getChargeOrg() {
        return chargeOrg;
    }

    public void setChargeOrg(String chargeOrg) {
        this.chargeOrg = chargeOrg;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getPropertyMgmt() {
        return propertyMgmt;
    }

    public void setPropertyMgmt(String propertyMgmt) {
        this.propertyMgmt = propertyMgmt;
    }

    public String getBuildingName() {
        return buildingName;
    }

    public void setBuildingName(String buildingName) {
        this.buildingName = buildingName;
    }

    public String getFloor() {
        return floor;
    }

    public void setFloor(String floor) {
        this.floor = floor;
    }

    public String getSuiteName() {
        return suiteName;
    }

    public void setSuiteName(String suiteName) {
        this.suiteName = suiteName;
    }

    public String getRoomName() {
        return roomName;
    }

    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }

    public String getBunkName() {
        return bunkName;
    }

    public void setBunkName(String bunkName) {
        this.bunkName = bunkName;
    }

    public String getContractId() {
        return contractId;
    }

    public void setContractId(String contractId) {
        this.contractId = contractId;
    }

    public String getContractName() {
        return contractName;
    }

    public void setContractName(String contractName) {
        this.contractName = contractName;
    }

    public String getContractType() {
        return contractType;
    }

    public void setContractType(String contractType) {
        this.contractType = contractType;
    }

    public String getCustomer() {
        return customer;
    }

    public void setCustomer(String customer) {
        this.customer = customer;
    }

    public BigDecimal getUnitPrice() {
        return unitPrice;
    }

    public void setUnitPrice(BigDecimal unitPrice) {
        this.unitPrice = unitPrice;
    }

    public BigDecimal getQuantity() {
        return quantity;
    }

    public void setQuantity(BigDecimal quantity) {
        this.quantity = quantity;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTax() {
        return tax;
    }

    public void setTax(BigDecimal tax) {
        this.tax = tax;
    }

    public BigDecimal getPrincipal() {
        return principal;
    }

    public void setPrincipal(BigDecimal principal) {
        this.principal = principal;
    }

    public BigDecimal getAmountReceived() {
        return amountReceived;
    }

    public void setAmountReceived(BigDecimal amountReceived) {
        this.amountReceived = amountReceived;
    }

    public String getChargeItem() {
        return chargeItem;
    }

    public void setChargeItem(String chargeItem) {
        this.chargeItem = chargeItem;
    }

    public String getChargeStandard() {
        return chargeStandard;
    }

    public void setChargeStandard(String chargeStandard) {
        this.chargeStandard = chargeStandard;
    }

    public Date getChargeMonth() {
        return chargeMonth;
    }

    public void setChargeMonth(Date chargeMonth) {
        this.chargeMonth = chargeMonth;
    }

    public Date getExpectedMonth() {
        return expectedMonth;
    }

    public void setExpectedMonth(Date expectedMonth) {
        this.expectedMonth = expectedMonth;
    }

    public Date getExpectedDate() {
        return expectedDate;
    }

    public void setExpectedDate(Date expectedDate) {
        this.expectedDate = expectedDate;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Boolean getLargeAmount() {
        return largeAmount;
    }

    public void setLargeAmount(Boolean largeAmount) {
        this.largeAmount = largeAmount;
    }

    public Object getPaymentStatus() {
        return paymentStatus;
    }

    public void setPaymentStatus(Object paymentStatus) {
        this.paymentStatus = paymentStatus;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public Object getReceiveStatus() {
        return receiveStatus;
    }

    public void setReceiveStatus(Object receiveStatus) {
        this.receiveStatus = receiveStatus;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", listId=").append(listId);
        sb.append(", chargeOrg=").append(chargeOrg);
        sb.append(", region=").append(region);
        sb.append(", propertyMgmt=").append(propertyMgmt);
        sb.append(", buildingName=").append(buildingName);
        sb.append(", floor=").append(floor);
        sb.append(", suiteName=").append(suiteName);
        sb.append(", roomName=").append(roomName);
        sb.append(", bunkName=").append(bunkName);
        sb.append(", contractId=").append(contractId);
        sb.append(", contractName=").append(contractName);
        sb.append(", contractType=").append(contractType);
        sb.append(", customer=").append(customer);
        sb.append(", unitPrice=").append(unitPrice);
        sb.append(", quantity=").append(quantity);
        sb.append(", taxRate=").append(taxRate);
        sb.append(", totalAmount=").append(totalAmount);
        sb.append(", tax=").append(tax);
        sb.append(", principal=").append(principal);
        sb.append(", amountReceived=").append(amountReceived);
        sb.append(", chargeItem=").append(chargeItem);
        sb.append(", chargeStandard=").append(chargeStandard);
        sb.append(", chargeMonth=").append(chargeMonth);
        sb.append(", expectedMonth=").append(expectedMonth);
        sb.append(", expectedDate=").append(expectedDate);
        sb.append(", startDate=").append(startDate);
        sb.append(", endDate=").append(endDate);
        sb.append(", largeAmount=").append(largeAmount);
        sb.append(", paymentStatus=").append(paymentStatus);
        sb.append(", creator=").append(creator);
        sb.append(", createDate=").append(createDate);
        sb.append(", note=").append(note);
        sb.append(", receiveStatus=").append(receiveStatus);
        sb.append("]");
        return sb.toString();
    }
}